floorplanning algorithm